Kramdown-Spezifikation
Probieren Sie Markdown Dingus aus, um mit dem Kramdown-Prozessor zu experimentieren.
Contents
Was ist Kramdown?
Kramdown ist ein schneller, vollständig in Ruby geschriebener Konverter für eine Obermenge von Markdown. Er erweitert die ursprüngliche Markdown-Syntax um Funktionen aus anderen Implementierungen wie Maruku, PHP Markdown Extra und Pandoc. Kramdown bietet eine strenge Syntax mit eindeutigen Regeln und bleibt zugleich mit den meisten Markdown-Dokumenten kompatibel.
Hauptmerkmale
- Schnell und vollständig in Ruby geschrieben: Bietet hohe Leistung und Portabilität
- Strenge Syntax: Bietet eindeutige Regeln und klare Spezifikationen
- Erweiterte Funktionen: Enthält viele Erweiterungen, die nicht im Standard-Markdown enthalten sind
- Jekyll-Integration: Standardmäßiger Markdown-Prozessor des statischen Website-Generators Jekyll
- Umfassend: Unterstützt Elemente auf Block- und Inline-Ebene sowie weitreichende Anpassungen
Wesentliche Unterschiede zu Standard-Markdown
1. Erweiterte Elemente auf Blockebene
Definitionslisten
- Kramdown unterstützt Definitionslisten (anders als Standard-Markdown)
-
Verwendet
:, um Begriffe von Definitionen zu trennen
Term 1
: Definition 1
Term 2
: Definition 2a
: Definition 2b
Tabellen
- Vollständige Tabellenunterstützung mit Kopfzeilen, Ausrichtung und Formatierung
- Umfassender als die grundlegende Markdown-Tabellensyntax
| Header 1 | Header 2 | Header 3 |
| :------- | :------: | -------: |
| Left | Center | Right |
| Aligned | Aligned | Aligned |
Matheblöcke
- Unterstützung für mathematische Ausdrücke mit LaTeX-Syntax
- Unterstützt Mathematik sowohl inline als auch in Blöcken
Inline math: $E = mc^2$
Block math:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
2. Erweiterte Textmarkierung
Fußnoten
- Vollständige Fußnotenunterstützung mit automatischer Nummerierung
-
Fußnoten im Referenzstil mit der Syntax
[^1]
This is a sentence with a footnote[^1].
[^1]: This is the footnote content.
Abkürzungen
- Unterstützung für Abkürzungen im HTML-Stil
- Automatische Erweiterung definierter Abkürzungen
This uses HTML and CSS.
Typografische Symbole
- Automatische Konvertierung gängiger typografischer Zeichen
- Typografische Anführungszeichen, Gedankenstriche, Auslassungspunkte usw.
"Smart quotes" and -- em dashes -- and ... ellipses
Even << guillemets >>
3. Attributlisten und Erweiterungen
Attributlistendefinitionen (ALDs)
- Wiederverwendbare Attributsätze definieren
- Unterstützung für IDs, Klassen und benutzerdefinierte Attribute
A paragraph with attributes.
{: #para-one .highlight}
Inline-Attributlisten (IALs)
- Attribute an bestimmte Elemente anfügen
- Unterstützung sowohl auf Block- als auch auf Span-Ebene
This *is*{:.underline} some `code`{:#id}{:.class}.
A [link](test.html){:rel='something'} and some **tools**{:.tools}.
Erweiterungen
- Benutzerdefiniertes Erweiterungssystem für zusätzliche Funktionen
- Integrierte Erweiterungen für Kommentare und Optionen
{::comment}
This text is completely ignored by kramdown.
{:/comment}
{::options key="val" /}
4. Erweiterte Codeblock-Unterstützung
Sprachspezifikation
-
Automatische Syntaxhervorhebung für abgegrenzte Codeblöcke
-
Unterstützung für viele Programmiersprachen
def hello puts "Hello, World!" end
Standard-Codeblöcke
- Verbesserte Handhabung eingerückter Codeblöcke
- Bessere Integration mit anderen Blockelementen
5. Strengere Parsing-Regeln
Zeilenumbruch
- Unterstützung für hart umbrochene Inhalte („Lazy Syntax“)
- Klare Regeln dafür, wann Zeilenumbrüche zulässig sind
- Aus Gründen der Lesbarkeit nicht empfohlen, aber aus Kompatibilitätsgründen unterstützt
Tab-Handhabung
- Setzt Tabulatorstopps bei Vielfachen von vier voraus
- Tabulatoren sind zum Einrücken nur am Zeilenanfang zulässig
- Davor dürfen keine Leerzeichen stehen
Blockgrenzen
- Klare Regeln dafür, wann Elemente an Blockgrenzen beginnen/enden müssen
- Konsistentes Verhalten über verschiedene Elementtypen hinweg
6. Erweiterte Link- und Bildunterstützung
Automatische Links
- Verbesserte automatische Linkerkennung
- Besserer Umgang mit URLs und E-Mail-Adressen
Referenzlinks
- Verbesserte Verarbeitung von Referenzlinks
- Bessere Konfliktlösung für mehrere Definitionen
Bildattribute
- Unterstützung für Bildattribute durch IALs
- Breite, Höhe, Alternativtext und andere HTML-Attribute
{:width="300" height="200" class="responsive"}
7. HTML-Integration
HTML-Blöcke
- Bessere Handhabung von HTML innerhalb von Markdown
- Unterstützung für HTML-Attribute und -Verarbeitung
- Flexibler als die standardmäßige Verarbeitung von HTML in Markdown
Inline-HTML
- Inline-HTML mit Attributunterstützung
- Bessere Integration mit der Markdown-Syntax
8. Mathematische Ausdrücke
Inline-Mathematik
-
Syntax
$...$für eingebettete mathematische Ausdrücke - LaTeX-kompatible Syntax
Mathematische Blöcke
-
Syntax
$$...$$für mathematische Ausdrücke in Blöcken - Unterstützung für komplexe Gleichungen und Formeln
Kramdown im Vergleich zu anderen Markdown-Varianten
| Funktion | Kramdown | CommonMark (GFM) | GitHub Flavored Markdown | MultiMarkdown | Standard |
|---|---|---|---|---|---|
| Durchgestrichen | Nein | Ja | Nein | Nein | Nein |
| Aufgabenlisten | Nein | Nein | Ja | Ja | Nein |
| Abgegrenzte Codeblöcke | Ja | Ja | Ja | Ja | Nein |
| Mathematik | Ja | Nein | Ja | Ja | Nein |
| Fußnoten | Ja | Ja | Ja | Ja | Nein |
| Definitionslisten | Ja | Nein | Nein | Ja | Nein |
| Abkürzungen | Ja | Nein | Nein | Nein | Nein |
| Attributlisten | Ja | Nein | Nein | Nein | Nein |
| Typografie | Ja | Nein | Nein | Ja | Nein |
Hauptvorteile von Kramdown
- Umfassender Funktionsumfang: Enthält viele Erweiterungen, die in anderen Implementierungen nicht zu finden sind
- Jekyll-Integration: Nahtlose Integration mit dem statischen Site-Generator von Jekyll
- Ruby-Ökosystem: Reine Ruby-Implementierung mit guter Unterstützung durch Ruby-Werkzeuge
- Erweiterbarkeit: Benutzerdefiniertes Erweiterungssystem für zusätzliche Funktionen
- Attributunterstützung: Umfangreiches Attributsystem für die HTML-Ausgabeanpassung
- Mathematische Unterstützung: Integrierte Unterstützung für mathematische LaTeX-Ausdrücke
- Strenges Parsing: Klare, eindeutige Parsing-Regeln
Häufige Anwendungsfälle
Jekyll-Sites
- Standardprozessor für statische Websites mit Jekyll
- Hervorragend für Dokumentationen und Blogs geeignet
Technische Dokumentation
- Mathe-Unterstützung für wissenschaftliches und technisches Schreiben
- Attributlisten für erweiterte HTML-Anpassungen
Akademisches Schreiben
- Fußnotenunterstützung für Zitate und Referenzen
- Mathematische Ausdrücke für Formeln und Gleichungen
Inhaltsverwaltung
- Erweiterungen für benutzerdefinierte Funktionen
- Attributlisten für Metadaten und Stil
Ressourcen
- Kramdown-Syntaxdokumentation
- Kramdown-Konverterdokumentation
- Jekyll-Integrationsleitfaden
- Kramdown-Repository auf GitHub
Migration von Standard-Markdown
Die meisten Standard-Markdown-Dokumente funktionieren mit Kramdown ohne Änderungen. So nutzen Sie die Funktionen von Kramdown:
- Definitionslisten hinzufügen: Glossare und Begriffslisten umwandeln
- Attributlisten verwenden: Fügen Sie IDs, Klassen und benutzerdefinierte Attribute hinzu
- Fußnoten implementieren: Verweise in Klammern umwandeln
Bewährte Vorgehensweisen
- „Lazy Syntax“ vermeiden: Verlassen Sie sich zugunsten der Lesbarkeit nicht auf harte Zeilenumbrüche
- Attributlisten verwenden: Nutzen Sie IALs für Stile und Metadaten
- Konsistente Einrückung: Verwenden Sie nach Möglichkeit Leerzeichen anstelle von Tabulatoren
Diese Dokumentation behandelt Kramdown 2.5.1. Aktuelle Informationen finden Sie in der offiziellen Dokumentation unter kramdown.gettalong.org.
Next up: Discount-GFM-Spezifikation ▶
Support Site | Legal | Privacy